package cl.ncx.cmvrc.persistence.base.entities.solicitud;

import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import cl.ncx.cmvrc.persistence.base.entities.grua.Grua;
import cl.ncx.cmvrc.persistence.base.entities.personas.Gruero;

/**
 * OrdenDeTrabajo entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "orden_de_trabajo", schema = "base")
@SequenceGenerator(name = "orden_de_trabajo_seque", sequenceName = "base.orden_de_trabajo_orden_de_trabajo_id_seq")
public class OrdenDeTrabajo implements java.io.Serializable {

	// Fields

	private Integer ordenDeTrabajoId;
	private EstadoOt estadoOt;
	private Solicitud solicitud;
	private Grua grua;
	private Gruero gruero;
	private Timestamp fecha;
	private Timestamp ultimoCambioEstado;
	private String observacion;

	// Constructors

	/** default constructor */
	public OrdenDeTrabajo() {
	}

	/** minimal constructor */
	public OrdenDeTrabajo(Integer ordenDeTrabajoId, EstadoOt estadoOt,
			Solicitud solicitud, Grua grua, Gruero gruero, Timestamp fecha,
			Timestamp ultimoCambioEstado) {
		this.ordenDeTrabajoId = ordenDeTrabajoId;
		this.estadoOt = estadoOt;
		this.solicitud = solicitud;
		this.grua = grua;
		this.gruero = gruero;
		this.fecha = fecha;
		this.ultimoCambioEstado = ultimoCambioEstado;
	}

	/** full constructor */
	public OrdenDeTrabajo(Integer ordenDeTrabajoId, EstadoOt estadoOt,
			Solicitud solicitud, Grua grua, Gruero gruero, Timestamp fecha,
			Timestamp ultimoCambioEstado, String observacion) {
		this.ordenDeTrabajoId = ordenDeTrabajoId;
		this.estadoOt = estadoOt;
		this.solicitud = solicitud;
		this.grua = grua;
		this.gruero = gruero;
		this.fecha = fecha;
		this.ultimoCambioEstado = ultimoCambioEstado;
		this.observacion = observacion;
	}

	// Property accessors
	@Id
	@Column(name = "orden_de_trabajo_id", unique = true, nullable = false)
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "orden_de_trabajo_seque")
	public Integer getOrdenDeTrabajoId() {
		return this.ordenDeTrabajoId;
	}

	public void setOrdenDeTrabajoId(Integer ordenDeTrabajoId) {
		this.ordenDeTrabajoId = ordenDeTrabajoId;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "estado", nullable = false)
	public EstadoOt getEstadoOt() {
		return this.estadoOt;
	}

	public void setEstadoOt(EstadoOt estadoOt) {
		this.estadoOt = estadoOt;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "solicitud", nullable = false)
	public Solicitud getSolicitud() {
		return this.solicitud;
	}

	public void setSolicitud(Solicitud solicitud) {
		this.solicitud = solicitud;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "grua", nullable = false)
	public Grua getGrua() {
		return this.grua;
	}

	public void setGrua(Grua grua) {
		this.grua = grua;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "gruero", nullable = false)
	public Gruero getGruero() {
		return this.gruero;
	}

	public void setGruero(Gruero gruero) {
		this.gruero = gruero;
	}

	@Column(name = "fecha", nullable = false, length = 35)
	public Timestamp getFecha() {
		return this.fecha;
	}

	public void setFecha(Timestamp fecha) {
		this.fecha = fecha;
	}

	@Column(name = "ultimo_cambio_estado", nullable = false, length = 35)
	public Timestamp getUltimoCambioEstado() {
		return this.ultimoCambioEstado;
	}

	public void setUltimoCambioEstado(Timestamp ultimoCambioEstado) {
		this.ultimoCambioEstado = ultimoCambioEstado;
	}

	@Column(name = "observacion")
	public String getObservacion() {
		return this.observacion;
	}

	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}

}